home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / dev / c / libiconv_src.lha / src / iso646_cn.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-07  |  662 b   |  40 lines

  1.  
  2. /*
  3.  * ISO646-CN
  4.  * also known as GB_1988-80
  5.  */
  6.  
  7. static int
  8. iso646_cn_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
  9. {
  10.   unsigned char c = *s;
  11.   if (c < 0x80) {
  12.     if (c == 0x24)
  13.       *pwc = (wchar_t) 0x00a5;
  14.     else if (c == 0x7e)
  15.       *pwc = (wchar_t) 0x203e;
  16.     else
  17.       *pwc = (wchar_t) c;
  18.     return 1;
  19.   }
  20.   return RET_ILSEQ;
  21. }
  22.  
  23. static int
  24. iso646_cn_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
  25. {
  26.   if (wc < 0x0080 && !(wc == 0x0024 || wc == 0x007e)) {
  27.     *r = wc;
  28.     return 1;
  29.   }
  30.   if (wc == 0x00a5) {
  31.     *r = 0x24;
  32.     return 1;
  33.   }
  34.   if (wc == 0x203e) {
  35.     *r = 0x7e;
  36.     return 1;
  37.   }
  38.   return RET_ILSEQ;
  39. }
  40.